package iface.aplicativo.negocio.entidade;

import iface.aplicativo.negocio.enumerador.IndSimNao;
import iface.aplicativo.negocio.enumerador.SituacaoDocumentoEnum;
import iface.arquitetura.entidade.Entidade;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name = "entrada_veiculo")
@SequenceGenerator(name = "sq_entrada_veiculo", sequenceName = "sq_entrada_veiculo", allocationSize = 1, initialValue = 1)
public class EntradaVeiculo implements Entidade {

	private static final long serialVersionUID = -422542988165878353L;

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sq_entrada_veiculo")
	@Column(name = "id_entrada_veiculo")
	private Long id;

	@ManyToOne
	@JoinColumn(name = "id_despachante")
	private Pessoa despachante;

	@ManyToOne
	@JoinColumn(name = "id_veiculo")
	private Veiculo veiculo;

	@ManyToOne
	@JoinColumn(name = "id_fornecedor")
	private Pessoa fornecedor;

	@OneToOne
	@JoinColumn(name = "id_venda_veiculo")
	private VendaVeiculo vendaVeiculo;

	@Column(name = "dt_compra_veiculo")
	private Date dtCompraVeiculo;

	@Column(name = "nm_intermediario")
	private String nmIntermediario;

	@Column(name = "cpf_intermediario")
	private String cpfIntermediario;

	@Column(name = "rg_intermediario")
	private String rgIntermediario;

	@Column(name = "fone_intermediario")
	private String foneIntermediario;

	@Column(name = "nr_nota_fiscal")
	private String nrNotaFiscal;

	@Column(name = "dt_nota_fiscal")
	private Date dtNotaFiscal;

	@Column(name = "vlr_nota_fiscal")
	private Double vlrNotaFiscal;

	@Column(name = "vlr_compra_veiculo")
	private Double vlrCompraVeiculo;

	@Column(name = "vlr_venda_veiculo")
	private Double vlrVendaVeiculo;

	@Column(name = "vlr_fipe")
	private Double vlrFipe;

	@Column(name = "alienado")
	private String alienado;

	@Column(name = "arrendatario")
	private String arrendatario;

	@Enumerated(EnumType.STRING)
	@Column(name = "ipva_pago")
	private IndSimNao ipvaPago;

	@Enumerated(EnumType.STRING)
	@Column(name = "seguro_pago")
	private IndSimNao seguroPago;

	@Enumerated(EnumType.STRING)
	@Column(name = "licenciamento_pago")
	private IndSimNao licenciamentoPago;

	@Column(name = "dt_documento")
	private Date dtDocumento;

	@Enumerated(EnumType.STRING)
	@Column(name = "situacao")
	private SituacaoDocumentoEnum situacao;

	@Column(name = "observacoes_veiculo")
	private String observacoesVeiculo;

	public Serializable getIdentificador() {
		return getId();
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Pessoa getDespachante() {
		return despachante;
	}

	public void setDespachante(Pessoa despachante) {
		this.despachante = despachante;
	}

	public Veiculo getVeiculo() {
		return veiculo;
	}

	public void setVeiculo(Veiculo veiculo) {
		this.veiculo = veiculo;
	}

	public Pessoa getFornecedor() {
		return fornecedor;
	}

	public void setFornecedor(Pessoa fornecedor) {
		this.fornecedor = fornecedor;
	}

	public Date getDtCompraVeiculo() {
		return dtCompraVeiculo;
	}

	public void setDtCompraVeiculo(Date dtCompraVeiculo) {
		this.dtCompraVeiculo = dtCompraVeiculo;
	}

	public String getNmIntermediario() {
		return nmIntermediario;
	}

	public void setNmIntermediario(String nmIntermediario) {
		this.nmIntermediario = nmIntermediario;
	}

	public String getCpfIntermediario() {
		return cpfIntermediario;
	}

	public void setCpfIntermediario(String cpfIntermediario) {
		this.cpfIntermediario = cpfIntermediario;
	}

	public String getRgIntermediario() {
		return rgIntermediario;
	}

	public void setRgIntermediario(String rgIntermediario) {
		this.rgIntermediario = rgIntermediario;
	}

	public String getFoneIntermediario() {
		return foneIntermediario;
	}

	public void setFoneIntermediario(String foneIntermediario) {
		this.foneIntermediario = foneIntermediario;
	}

	public String getNrNotaFiscal() {
		return nrNotaFiscal;
	}

	public void setNrNotaFiscal(String nrNotaFiscal) {
		this.nrNotaFiscal = nrNotaFiscal;
	}

	public Date getDtNotaFiscal() {
		return dtNotaFiscal;
	}

	public void setDtNotaFiscal(Date dtNotaFiscal) {
		this.dtNotaFiscal = dtNotaFiscal;
	}

	public Double getVlrNotaFiscal() {
		return vlrNotaFiscal;
	}

	public void setVlrNotaFiscal(Double vlrNotaFiscal) {
		this.vlrNotaFiscal = vlrNotaFiscal;
	}

	public Double getVlrCompraVeiculo() {
		return vlrCompraVeiculo;
	}

	public void setVlrCompraVeiculo(Double vlrCompraVeiculo) {
		this.vlrCompraVeiculo = vlrCompraVeiculo;
	}

	public Double getVlrVendaVeiculo() {
		return vlrVendaVeiculo;
	}

	public void setVlrVendaVeiculo(Double vlrVendaVeiculo) {
		this.vlrVendaVeiculo = vlrVendaVeiculo;
	}

	public Double getVlrFipe() {
		return vlrFipe;
	}

	public void setVlrFipe(Double vlrFipe) {
		this.vlrFipe = vlrFipe;
	}

	public String getAlienado() {
		return alienado;
	}

	public void setAlienado(String alienado) {
		this.alienado = alienado;
	}

	public String getArrendatario() {
		return arrendatario;
	}

	public void setArrendatario(String arrendatario) {
		this.arrendatario = arrendatario;
	}

	public IndSimNao getIpvaPago() {
		return ipvaPago;
	}

	public void setIpvaPago(IndSimNao ipvaPago) {
		this.ipvaPago = ipvaPago;
	}

	public IndSimNao getSeguroPago() {
		return seguroPago;
	}

	public void setSeguroPago(IndSimNao seguroPago) {
		this.seguroPago = seguroPago;
	}

	public IndSimNao getLicenciamentoPago() {
		return licenciamentoPago;
	}

	public void setLicenciamentoPago(IndSimNao licenciamentoPago) {
		this.licenciamentoPago = licenciamentoPago;
	}

	public Date getDtDocumento() {
		return dtDocumento;
	}

	public void setDtDocumento(Date dtDocumento) {
		this.dtDocumento = dtDocumento;
	}

	public SituacaoDocumentoEnum getSituacao() {
		return situacao;
	}

	public void setSituacao(SituacaoDocumentoEnum situacao) {
		this.situacao = situacao;
	}

	public String getObservacoesVeiculo() {
		return observacoesVeiculo;
	}

	public void setObservacoesVeiculo(String observacoesVeiculo) {
		this.observacoesVeiculo = observacoesVeiculo;
	}

	public VendaVeiculo getVendaVeiculo() {
		return vendaVeiculo;
	}

	public void setVendaVeiculo(VendaVeiculo vendaVeiculo) {
		this.vendaVeiculo = vendaVeiculo;
	}

}
